home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 076-100 / scopedisk81 / wkeys / wkeys.h < prev    next >
C/C++ Source or Header  |  1995-03-19  |  4KB  |  105 lines

  1. /*
  2.  *  wKeys.h    Structure definitions for wKeys program, which moves
  3.  *             and activates windows and screens via keystrokes.
  4.  *
  5.  *             Copyright (c) 1987,1988 by Davide P. Cervone
  6.  *  You may use this code provided this copyright notice is left intact.
  7.  */
  8.  
  9. /*
  10.  *  HotKey is the structure that holds the information needed to bind a
  11.  *  key to a function.  Each HotKey is a pair of longwords, the first
  12.  *  represents a combination of the key-code and qualifier mask for the
  13.  *  key to be bound to a function.  Using a single longword for this makes
  14.  *  it easy to compare against the currently pressed key.
  15.  *
  16.  *  The second longword represents the qualifier mask that specifies the 
  17.  *  qualifier flags that are important to distinguish this key binding from
  18.  *  other bindings with the same scan-code but different qualifiers.  It is
  19.  *  the logical OR of all the qualifiers used by any key definition with
  20.  *  the same scan-code as this one.  This longword contains 0xFF in the 
  21.  *  same position where the first one has the scan-code, so ANDing this mask
  22.  *  against a KeyCode longword does not mask out the key code.
  23.  *
  24.  *  The second longword also contains a byte that represents the action that
  25.  *  the key will perform when it is pressed.
  26.  */
  27.  
  28. struct HotKey
  29. {
  30.    union
  31.    {
  32.       struct
  33.       {
  34.          UBYTE Code;                /* the InputEvent ie_Code field */
  35.          UBYTE Flags;               /* SHIFT, AMIGA, and ALT (0 otherwise) */
  36.          UWORD Qualifiers;          /* the InputEvent ie_Qualfiers field */
  37.       } PartCode;
  38.       long FullCode;                /* KeyCode longword */
  39.    } Key;
  40.    union
  41.    {
  42.       struct
  43.       {
  44.          UBYTE FF;                  /* always 0xFF */
  45.          UBYTE Action;              /* the action to be performed by this key */
  46.          UWORD Mask;                /* the qualifier mask */
  47.       } PartMask;
  48.       long FullMask;                /* the KeyMask longword */
  49.    } Mask;
  50. };
  51.  
  52. #define hk_Code     Key.PartCode.Code
  53. #define hk_Flags    Key.PartCode.Flags
  54. #define hk_Qual     Key.PartCode.Qualifiers
  55. #define hk_KeyCode  Key.FullCode
  56. #define hk_FF       Mask.PartMask.FF
  57. #define hk_Action   Mask.PartMask.Action
  58. #define hk_Mask     Mask.PartMask.Mask
  59. #define hk_KeyMask  Mask.FullMask
  60.  
  61. /*
  62.  *  This is the structure used in the linked list when building the key
  63.  *  definition array.  It is the same as a HotKey except it contains pointers
  64.  *  to the next and previous items so that it can be sorted by mSort().
  65.  */
  66.  
  67. struct HotKeyItem
  68. {
  69.    struct HotKeyItem *Next;
  70.    struct HotKeyItem *Prev;
  71.    struct HotKey HotKey;
  72. };
  73.  
  74. #define hki_Code     HotKey.hk_Code
  75. #define hki_Flags    HotKey.hk_Flags
  76. #define hki_Qual     HotKey.hk_Qual
  77. #define hki_KeyCode  HotKey.hk_KeyCode
  78. #define hki_FF       HotKey.hk_FF
  79. #define hki_Action   HotKey.hk_Action
  80. #define hki_Mask     HotKey.hk_Mask
  81. #define hki_KeyMask  HotKey.hk_KeyMask
  82.  
  83. /*
  84.  *  These are the actions that can be perfomed.  They must correspond to the
  85.  *  Action[] array in the input handler.  You can add functions to the end
  86.  *  of this list provided you add them into the Action[] array in 
  87.  *  wKeys-Handler.c, and the Action[] array in BindWKeys.c.
  88.  */
  89.  
  90. #define SCREENTOFRONT     1
  91. #define SCREENTOBACK      2
  92. #define ACTIVATEPREVIOUS  3
  93. #define ACTIVATENEXT      4
  94. #define WINDOWTOBACK      5
  95. #define WINDOWTOFRONT     6
  96. #define BACKTOFRONT       7
  97. #define FRONTTOBACK       8
  98. #define CLOSETHEWINDOW    9
  99. #define WINDOWTOICON      10
  100. #define ICONTOWINDOW      11
  101. #define SELECTNEXTICON    12
  102.  
  103. #define KEYCODE(qual,key)       (((key)<<24)|(qual))
  104. #define KEY(e)                  KEYCODE((e)->ie_Qualifier,(e)->ie_Code)
  105.